.. _ref_sync_additional_configuration:

.. :validated: 3.2.0

Дополнительная настройка модуля синхронизации
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

При использовании модуля синхронизации **Microsoft Active Directory Domain Services** (**MS AD DS**) является приоритетным источником данных, все изменения в **MS AD** будут применены к соответствующим объектам и атрибутам **ALD Pro**. Для обеспечения надёжной синхронизации и поддержания консистентного состояния модуль синхронизации настраивается на одном контроллере **ALD Pro**.

Модуль синхронизации работает по следующим принципам:

- **Источник данных LDAP:** используется только **MS AD DS**. Все изменения объектов выполняются исключительно в **MS AD**;
- **Направление:** односторонняя синхронизация (**MS AD** → **ALD Pro**);
- **Контроль изменений:**
  - объекты, управляемые модулем синхронизации, не редактируются напрямую в **ALD Pro;**
  - все изменения (создание, модификация, удаление) производятся только в **MS AD**.

Исходные настройки
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Предполагается, что на момент настройки модуля синхронизации у нас имеются:

-  Настроенный контроллер домена **MS AD**;
-  Настроенный контроллер домена **ALD Pro**;
-  В обоих доменах **MS AD** и **ALD Pro** настроены корзины с одинаковыми интервалами ротации(очистки);
-  Для сетей, в которых находятся контроллеры домена **MS AD** и **ALD Pro**, настроено перенаправление **DNS**-зон;
-  В домене **MS AD** поднят центр сертификации и выдан сертификат для доступа по **LDAPs** (см. подробности в разделе :ref:`cert_ms_ad` );
-  Для учетной записи **MS AD**, под которой идет подключение модуля синхронизации к контроллерам домена **MS AD**, необходимо через ``powershell`` выдать права на контейнер ``“Deleted Objects”`` и организационное подразделение (**OU**), задействованное для процесса синхронизации.

.. note::

   В примере ниже при помощи команд powershell выдаются права на контейнер **Deleted Objects** и организационное подразделение (OU) **Подразделение А** для пользователя **aldagent** в домене **winad.lan**

.. code-block:: powershell

   // для выдачи прав на контейнер запускаем ``powershell`` от имени администратора
   dsacls "CN=Deleted Objects,DC=winad,DC=lan" /takeownership
   dsacls "CN=Deleted Objects,DC=winad,DC=lan" /g winad\aldagent:LCRP
   dsacls "OU=Подразделение А,DC=winad,DC=lan" /g "winad\aldagent:CA;Reset Password;user" /I:S

.. _cert_ms_ad:

Выгрузка сертификатов для контроллера домена **MS AD**
''''''''''''''''''''''''''''''''''''''''''''''''''''''

Для корректной работы модуля синхронизации с контроллером домена **MS AD**
необходимо выгрузить и подготовить полный набор сертификатов, включая:

- сертификат сервера (контроллера домена);
- сертификат центра сертификации (корневой сертификат **ЦС**);
- сертификаты промежуточных центров сертификации (если используются);
- объединённый файл цепочки сертификатов (**chain**-файл), используемый
  для **LDAPs**-подключений.

.. note::

   Для корректного отображения окна конфигуратора используйте разрешение экрана не ниже 1280×1024, иначе элементы интерфейса могут выходить за пределы экрана.

.. rubric:: Получение серверного сертификата контроллера домена

Запустить **Центр Сертификации → Шаблоны Сертификатов → Управление**
на сервере с ролью **Центр Сертификации**:

.. figure:: images/1.png
   :name: fig-cert-templates

Создать копию шаблона **Проверка подлинности Kerberos**, выбрав пункт **Скопировать шаблон** контекстного меню:

.. figure:: images/2.png
   :name: 2

Настроить шаблон сертификата на вкладке **Общие**:

-  имя сертификата **LDAPowerSSL**;
-  период действия сертификата.

.. figure:: images/3.png
   :name: 3

Отметить галочкой пункт меню **Опубликовать сертификат в MS AD**.

Опубликовать новый тип сертификата. Для этого в в контекстном меню раздела **Шаблоны сертификатов** выбрать **Создать → Выдаваемый шаблон сертификата**.

.. figure:: images/5.png
   :name: 5

В списке доступных шаблонов выбрать созданный ранее:

.. figure:: images/6.png
   :name: 6

На контроллере домена открыть **Управление сертификатами** (сертификаты компьютера),
перейти в раздел **Личное**, выбрать **Запросить новый сертификат** и
выпустить сертификат по созданному шаблону.

.. figure:: images/7.png
   :name: fig-cert-request


В списке доступных сертификатов выбрать созданный ранее, выпустить сертификат (кнопка **Выпустить сертификат**) и экспортировать (контекстное меню **Все задачи → Экспорт**).

.. figure:: images/8.png
   :name: 8

Откроется мастер экспорта сертификатов:

.. figure:: images/9.png
   :name: 9

.. figure:: images/10.png
   :name: 10

Выбрать кодировку ``base64`` для файла сертификата:

.. figure:: images/11.png
   :name: 11

Задать имя файла:

.. figure:: images/12.png
   :name: 12

После нажатия кнопки **Готово** будет выгружен файл сертификата:

.. code-block:: text

   <server_cert>.cer

--

.. figure:: images/13.png
   :name: 13

Необходимо изменить формат файла сертификата на \*.pem, переименовав файл в <имя_сертификата.pem>.
(например sert.pem - как публичный ключ для подключения по **LDAPs** к контроллеру **MS AD**)

.. code-block:: text

   <server_cert>.cer → <server_cert>.pem


.. rubric:: Выгрузка сертификата центра сертификации (ЦС)

Дополнительно требуется выгрузить **корневой сертификат ЦС**, так как
без него модуль синхронизации не сможет корректно выстроить цепочку доверия.

Открыть оснастку **Центр Сертификации**, выбрать пункт **Сертификаты ЦС**
и экспортировать корневой сертификат в формате ``Base64``.

.. figure:: images/111.png
   :name: fig-ca-cert-export

Полученный файл следует сохранить как:

.. code-block:: text

   <ca_cert>.pem


.. rubric:: Выгрузка сертификатов промежуточных ЦС (если есть)

Если в домене применяется иерархия центров сертификации, необходимо
также выгрузить все **промежуточные сертификаты** точно так же, как
корневой ЦС.

.. figure:: images/112.png
   :name: fig-intermediate-ca-export

Каждый файл сохраняется в формате:

.. code-block:: text

   <intermediate_ca_X>.pem


.. rubric:: Формирование цепочки сертификатов (chain-файл)

Для работы модуля синхронизации требуется единый файл,
содержащий:

1) сертификат контроллера домена;  
2) корневой сертификат ЦС;  
3) сертификаты всех промежуточных ЦС.

Это позволяет избежать типичной ошибки:

.. code-block:: text

   pwd-sync ERROR main Произошла ошибка: Ошибка подключения к ldap://windc1.win.company.lan

Chain-файл можно создать командой:

.. code-block:: bash

   cat <server_cert>.pem <ca_cert>.pem <intermediate_ca_1>.pem <intermediate_ca_2>.pem > windc-chain.pem

.. note::

   Допускается объединение вручную путём последовательного копирования. В файле не должно быть пустых строк. Порядок следования сертификатов не критичен, модуль синхронизации корректно анализирует структуру цепочки.

.. figure:: images/113.png
   :name: fig-chain-file-example

.. rubric:: Итог

Для успешной интеграции с **MS AD** по **LDAPs** необходимо использовать именно
объединённый файл:

.. code-block:: text

   windc-chain.pem


Он должен быть указан в конфигурации модуля синхронизации как набор
доверенных сертификатов.

Выгрузка сертификатов для контроллера домена **ALD Pro**
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Для выгрузки сертификата необходимо зайти на портал управления **ALD Pro**, нажать на кнопку просмотра информации о сайте и выбрать **Незащищенное соединение → Подробнее**:

.. figure:: images/14.png
   :name: 14

Выбрать **Просмотреть сертификат**:

.. figure:: images/15.png
   :name: 15

Откроется файл сертификата:

.. figure:: images/16.png
   :name: 16

Открыть ссылку **PEM (сертификат)**:

.. figure:: images/17.png
   :name: 17

Сертификат сайта сохранен.

.. _point4_2:

Настройка синхронизации паролей **MS AD** → **ALD**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Установка passwdhk на контроллер домена (если ранее не устанавливался)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Для настройки потребуется файл PasswdhkSetup.msi, который можно скачать в личном кабинете пользователя Astra Linux https://lk-new.astralinux.ru.

.. important::
   
   Синхронизация пароля пользователя будет успешна только для тех учетных записей **MS AD**, для которых пароль задавался после создания групповой политики ``passwdhk``. Пароли, изменяемые до установки passwdhk, не смогут быть синхронизированы в целевой **LDAP** (**ALD Pro**). Для синхронизации паролей у существующих пользователей необходимо сменить/обновить пароль в **LDAP**-источнике  (**MS AD DS**).   

Перед началом установки необходимо установить компонент ``Visual C++ Redistributable 2022``.

1. Выполнить запуск установочного файла passwdhk_install/util/VC_redist.x64.exe

Установку необходимо выполнить на каждом контроллере домена, где планируется установка утилиты ``passwdhk``.

2. Запустить файл ``PasswdhkSetup.msi`` от имени администратора.

3. На экране параметров установки указать следующие значения:

 - **Уровень логирования** (глубина регистрации событий в журнале) - указать один из четырех уровней логирования;

 - **Номер ключа регистрации** - ввести значение, полученное на портале управления **ALD Pro**;

 - **Публичный ключ регистрации** - вставить файл открытого ключа, скачанный при развертывании модуля синхронизации в **ALD Pro** **Модуль синхронизации → Настройки → Синхронизация паролей → Кнопка “Получить ключ”** (подробнее в разделе **Синхронизация паролей ALD Pro → MS AD**).

.. note::

   Если ключ подгрузился автоматически, это означает, что на контроллере домена имеются артефакты. В этом случае необходимо выполнить шаги из раздела Настройка **синхронизации паролей MS AD → ALD** для удаления артефактов старой версии. Это позволит избежать некорректной работы утилиты и ошибок установки или нарушения работы компонентов. 

.. figure:: images/18.png
   :name: 18

1. После заполнения всех параметров нажать на кнопку **Установить**, затем — **Готово**.

2. Дождаться завершения перезагрузки контроллера домена.
   
3. Проверить, что в реестре создались необходимые записи.

.. figure:: images/19.png
   :name: 19

.. figure:: images/20.png
   :name: 20

Обновление passwdhk, установленного через групповую политику (GPO), на версию MSI
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. important::

   Утилита может сработать некорректно, если в системе присутствуют артефакты предыдущих установок. В редких случаях это может привести к ошибкам установки или нарушению работы компонентов.

Если на контроллере домена ранее был установлен ``passwdhk`` через групповую политику (GPO), необходимо выполнить удаление старой версии перед установкой новой версии через MSI:

1. Удалить объект групповой политики ``passwdhk`` в редакторе групповых политик (gpmc.msc).

.. figure:: images/21.png
   :name: 21

2. Удалить папку ``passwdhk`` из сетевого каталога ``\\<Имя-контроллера-домена>\SYSVOL\<Имя-домена>\scripts``.

.. figure:: images/22.png
   :name: 22

3. Очистить параметры в реестре:

- Удалить ключ ``Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\passwdhk``.

.. figure:: images/23.png
   :name: 23

- В параметре Notification Packages по пути ``Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa`` удалите значение ``passwdhk``.

.. figure:: images/24.png
   :name: 24

4. Перезагрузить контроллер домена для применения изменений.

5. После перезагрузки вручную удалить из каталога ``C:\Windows\System32`` файлы ``passwdhk.dll`` и ``libcrypto-3-x64.dll``.

.. figure:: images/25.png
   :name: 25

.. figure:: images/26.png
   :name: 26

6. Выполнить установку новой версии ``passwdhk`` через ``PasswdhkSetup.msi``, следуя инструкции из пункта инструкции **Исходные настройки** для модуля синхронизации.

Автоматизированная установка ``passwdhk`` через MST-файл
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Для массовой установки утилиты ``passwdhk`` на контроллеры домена можно использовать файл трансформации (MST), содержащий заранее заданные параметры конфигурации, который можно развернуть с помощью групповой политики (GPO).

.. note::

   Для редактирования установочного файла ``.msi`` и создания ``.mst`` трансформации можно использовать любую утилиту, поддерживающую редактирование таблиц MSI-файлов (например, **Orca** или аналогичные средства). В данной инструкции приведены примеры с использованием Orca.

Создание MST-файла
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

1. Открыть ``PasswdhkSetup.msi`` в утилите редактирования MSI-файлов и создать новый трансформационный файл (MST).

2. В меню File → Open выбрать установочный файл ``PasswdhkSetup.msi``.

3. В меню **Transform** выбрать **New Transform**.

.. figure:: images/27.png
   :name: 27

4. Перейти на вкладку **Property** и добавить следующие свойства:

 - ``REGKEY`` — вставьте публичный ключ регистрации, полученный на портале управления **ALD Pro**. Каждую строку ключа необходимо экранировать символом \n (перевод строки).

 - ``KVNOPUB`` — номер ключа, также полученный на портале.

.. figure:: images/28.png
   :name: 28

.. figure:: images/29.png
   :name: 29

.. figure:: images/30.png
   :name: 30

5. После добавления параметров выбрать **Transform** → **Generate Transform** и сохранить полученный файл под именем, например, ``pass.mst``.

.. figure:: images/31.png
   :name: 31

Подготовка файлов для установки
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

1. Перейти в сетевую папку: ``\\<Имя-контроллера-домена>\SYSVOL\<Имя-домена>\scripts``

2. Скопировать в нее следующие файлы:

 - ``PasswdhkSetup.msi``;

 - ``pass.mst``.

.. figure:: images/32.png
   :name: 32

Настройка групповой политики
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

1. Открыть редактор групповой политики (gpmc.msc).

2. В узле **Domain Controllers** создать новую групповую политику или использовать существующую.

3. Перейти в раздел: **Конфигурация пользователя** → **Политики** → **Конфигурация программ** → **Установка программ**.

4. Создать новый пакет:

 - Указать путь к ``PasswdhkSetup.msi`` из сетевой папки;

 - в способе развертывания выбрать Особый.

.. figure:: images/33.png
   :name: 33

5. Добавить MST-файл ``pass.mst`` по тому же сетевому пути.

.. figure:: images/34.png
   :name: 34

Применение политики
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

1. Применить политику командой: ``gpupdate /force``

2. Перезагрузить контроллер домена.

.. _point4_1:

Синхронизация паролей **ALD Pro** → **MS AD**
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Получение открытого ключа
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

В интерфейсе **ALD Pro** открыть **Модуль синхронизации → Конфигурации → Синхронизация паролей**

.. figure:: images/35.png
   :name: 35

По нажатию кнопки **Получить ключ** скачивается файл открытого ключа и актуализируется порядковый номер ключа.

Синхронизация паролей
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Скачанный файл открытого ключа необходимо сохранить в любую директорию, например, ``/tmp/``. Следующим шагом файл открытого ключа необходимо скопировать в расположение ``/opt/rbta/aldpro/syncer/``:

.. code-block:: bash

   sudo cp /tmp/public.gpg  /opt/rbta/aldpro/syncer/public.gpg

Перезагружаем контроллер домена:

.. code-block:: bash

   sudo aldproctl restart

.. note:: 

   - При изменении пароля синхронизированного пользователя через интерфейс FreeIpa, синхронизация пароля от **ALD Pro** к **MS AD** не произойдет. Для изменения пароля с последующей успешной синхронизацией необходимо использовать интерфейс ПК «**ALD Pro**»;

   - Процесс изменения пароля пользователя через личный кабинет с последующей синхронизацией от **ALD Pro** к **MS AD** проходит успешно только при использовании личного кабинета контроллера домена, на котором был развернут модуль синхронизации;

   - При сбросе пароля пользователя через интерфейс ПК «**ALD Pro**» временный пароль не синхронизируется. После сброса пароля пользователя необходимо залогиниться в домене, изменить пароль с временного на постоянный. При данных условиях произойдет синхронизация пароля от **ALD Pro** к **MS AD**.

Пароли пользователей **MS AD**, установленные до настройки модуля синхронизации, синхронизированы не будут.

Синхронизация паролей пользователей после настройки модуля синхронизации и сопоставлений подразделений происходит по логике:

- синхронизирован пользователь в домен **ALD Pro** → изменен пароль пользователя в домене **MS AD** → синхронизирован пароль пользователя в домен **ALD Pro**;

- создан пользователь в домене **MS AD** → синхронизирован пользователь в домен **ALD Pro**.

.. attention::
   
   При настройке синхронизации паролей между **ALD Pro** и **MS AD** рекомендуется вручную задать согласованные значения параметров политики паролей в обеих системах, так как их автоматическая синхронизация не предусмотрена.

Включение TLS на Windows Server 2008R2
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. important::
   
   Настройка выполняется, если на контроллере домена отключено TLS. Данная инструкция применима к контроллерам домена с ОС WS 2008R2. Если версия ОС отличается, необходимо обратиться к официальной документации Microsoft для выбора подходящей инструкции.

Алгоритм включения TLS
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

1. Для включения TLS необходимо обновить реестр на сервере контроллера домена.

   - Необходимо открыть реестр: выполнить “regedit” в окне запуска.

.. figure:: images/36.png
   :name: 36

.. figure:: images/37.png
   :name: 37

.. figure:: images/38.png
   :name: 38

Откроется окно редактора реестра:

.. figure:: images/39.png
   :name: 39


- Необходимо перейти к расположению и добавить разделы TLS 1.1 и TLS.
- В разделе Protocol:

``HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocol``

.. figure:: images/40.png
   :name: 40

.. figure:: images/41.png
   :name: 41

Создаются еще два раздела Client и Server под обоими ключами TLS.

.. figure:: images/42.png
   :name: 42

- Теперь необходимо создать значения DWORD в разделе Server и Client со следующими значениями:

::

   DisabledByDefault [Значение = 0]
   Enabled [Значение = 1]

.. figure:: images/43.png
   :name: 43

.. figure:: images/44.png
   :name: 44

2. Необходимо отключить старые версии TLS и SSL. Для этого:

   1. Открыть реестр на сервере контроллера домена: выполнить “regedit” в окне запуска (аналогично шагу 1).

   2. Перейти к расположению:

``HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols``

   3. Изменить значения DWORD в разделе Server и Client в разделе ключи TLS 1.0, SSL 3.0 и более старых версий SSL.

::

    DisabledByDefault [Значение = 0]
    Enabled [Значение = 0]

3. После выполнения всех вышеперечисленных настроек необходимо перезагрузить сервер контроллера домена. Данная настройка выполняется на всех контроллерах домена.

Особенности настройки при миграции большого количества объектов
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

По умолчанию 389ds выполняет обновления ссылочной целостности сразу после операции удаления или переименования. В зависимости от количества операций это может повлиять на производительность. Чтобы уменьшить влияние на производительность, есть возможность увеличить время между обновлениями, для этого необходимо задать интервал обновления в секундах. По умолчанию интервал обновления равен 0.

Чтобы показать имя 389ds-сервера:

.. code-block:: bash

   sudo dsctl -l

Скопируйте в буфер имя вашего сервера (рядом с ним вы увидите ``slapd-GLOBAL-CATALOG``). Чтобы отобразить текущий интервал обновления, запустите (заменив <имя **LDAP**-сервера> на имя нужного вам **LDAP**-сервера):

.. code-block:: bash

   sudo dsconf <имя **LDAP**-сервера> plugin referential-integrity show | grep referint-update-delay

Задать новое значение интервала обновления:

.. code-block:: bash

   sudo dsconf <имя **LDAP**-сервера> plugin referential-integrity set --update-delay <новое_значение>

Перезапустите инстанс:

.. code-block:: bash

   sudo dsctl <имя **LDAP**-сервера> restart


